/*
 * @lc app=leetcode.cn id=151 lang=cpp
 *
 * [151] 颠倒字符串中的单词
 */

// @lc code=start
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    vector<string> words;
    void split(const string &s)
    {
        int i = 0;
        int j = -1;
        while (true)
        {
            while (i < s.size() && s[i] == ' ')
            {
                ++i;
            }

            if (i >= s.size())
                break;

            j = s.find_first_of(' ', i);
            if (j == s.npos)
            {
                j = s.size();
            }
            words.push_back(s.substr(i, j - i));
            i = j + 1;
        }
    }
    string reverseWords(string s)
    {
        split(s);
        string ret;
        int i = words.size() - 1;
        while (i > 0)
        {
            ret += words[i] + ' ';
            --i;
        }
        ret += words[0];
        return ret;
    }
};

// int main()
// {
//     string s("  hello world  ");
//     cout << Solution().reverseWords(s) << endl;
//     return 0;
// }

// @lc code=end
